//
// Created by 邹嘉旭 on 2025/8/6.
//

#ifndef LDACS_CORENET_LOG_H
#define LDACS_CORENET_LOG_H

#include "elements/elements.h"

#define cn_log_trace(ele, intf, ...) cn_log(ele, intf, LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__)
#define cn_log_warn(ele, intf, ...) cn_log(ele, intf, LOG_WARN, __FILE__, __LINE__, __VA_ARGS__)
#define cn_log_debug(ele, intf, ...) cn_log(ele, intf,  LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
#define cn_log_info(ele, intf, ...) cn_log(ele, intf, LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
#define cn_log_error(ele, intf, ...) cn_log(ele, intf, LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
#define cn_log_fatal(ele, intf, ...) cn_log(ele, intf, LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__)

#define cn_log_buf(level, ele, intf, head, ptr, len) cn_log_buffer(ele, intf, level, __FILE__, __LINE__, head, ptr, len)


void cn_log(const char *ele_tag, interface_type_t intf, int level, const char *file, int line, const char *fmt, ... );

void cn_log_buffer(const char *ele_tag, interface_type_t intf, int level, const char *file, int line, const char *msg_head, const uint8_t *buf, size_t len);

#endif //LDACS_CORENET_LOG_H